import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';

class TestTextWidget extends StatelessWidget {
  const TestTextWidget({super.key});

  /**
   * textAlign : 文本的对齐方式；可以选择左对齐、右对齐还是居中。注意，对齐的参考系是Text widget 本身。本例中虽然是指定了居中对齐，但因为 Text 文本内容宽度不足一行，Text 的宽度和文本内容长度相等，那么这时指定对齐方式是没有意义的，只有 Text 宽度大于文本内容长度时指定此属性才有意义。下面我们指定一个较长的字符串：
   * maxLines、overflow：指定文本显示的最大行数，默认情况下，文本是自动折行的，如果指定此参数，则文本最多不会超过指定的行。如果有多余的文本，可以通过overflow来指定截断方式，默认是直接截断，本例中指定的截断方式TextOverflow.ellipsis，它会将多余文本截断后以省略符“...”表示；TextOverflow 的其他截断方式请参考 SDK 文档。
   * textScaleFactor：代表文本相对于当前字体大小的缩放因子，相对于去设置文本的样式style属性的fontSize，它是调整字体大小的一个快捷方式。该属性的默认值可以通过MediaQueryData.textScaleFactor获得，如果没有MediaQuery，那么会默认值将为1.0。
   */
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("基础组件 Text 学习使用"),
      ),
      body: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Text(
            "Hello World",
            textAlign: TextAlign.left,
          ),
          Text(
            "Hello world! I'm Jack. " * 4,
            maxLines: 1,
            overflow: TextOverflow.ellipsis,
          ),
          Text(
            "Hello world! I'm Jack. " * 4,
            textAlign: TextAlign.center,
          ),
          Text(
            "Jack",
            textScaleFactor: 5,
          ),
          Text(
            "Text Style ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
          ),
          Text(
            "Hello Flutter [color: Colors.red]",
            style: TextStyle(color: Colors.red),
          ),
          Text(
            "Hello Flutter [fontSize: 18.0]",
            style: TextStyle(fontSize: 18.0),
          ),
          Text(
            "Hello Flutter [fontSize: 10.0]",
            style: TextStyle(fontSize: 10.0),
          ),
          /*fontSize：该属性和 Text 的textScaleFactor都用于控制字体大小。但是有两个主要区别：
              fontSize可以精确指定字体大小，而textScaleFactor只能通过缩放比例来控制。
              textScaleFactor主要是用于系统字体大小设置改变时对 Flutter 应用字体进行全局调整，
              而fontSize通常用于单个文本，字体大小不会跟随系统字体大小变化。*/
          Text(
            "Hello Flutter [height: 1.2]",
            style: TextStyle(height: 1.2),
          ),
          Text(
            "Hello Flutter [height: 1]",
            style: TextStyle(height: 1),
          ), // height：该属性用于指定行高，但它并不是一个绝对值，而是一个因子，具体的行高等于fontSize*height
          Text(
            "Hello Flutter [height: 0.5]",
            style: TextStyle(height: 0.5),
          ),
          Text(
            "Hello Flutter [fontFamily: \"Courier\"]",
            style: TextStyle(fontFamily: "Courier"),
          ), //fontFamily ：由于不同平台默认支持的字体集不同，所以在手动指定字体时一定要先在不同平台测试一下
          Text(
            "Hello Flutter [background: Paint()..color=Colors.yellow]",
            style: TextStyle(
              background: Paint()..color = Colors.yellow,
            ),
          ),
          Text(
            "Hello Flutter [decoration:TextDecoration.underline]",
            style: TextStyle(decoration: TextDecoration.underline),
          ),
          Text(
            "Hello Flutter [decoration:TextDecoration.overline]",
            style: TextStyle(decoration: TextDecoration.overline),
          ),
          Text(
            "Hello Flutter [decoration:TextDecoration.lineThrough]",
            style: TextStyle(decoration: TextDecoration.lineThrough),
          ),
          Text(
            "Hello Flutter [decorationStyle: .dashed]",
            style: TextStyle(decorationStyle: TextDecorationStyle.dashed),
          ),
          Text(
            "Hello Flutter [decorationStyle: .dotted]",
            style: TextStyle(decorationStyle: TextDecorationStyle.dotted),
          ),
          Text(
            "Hello Flutter [decorationStyle: .double]",
            style: TextStyle(decorationStyle: TextDecorationStyle.double),
          ),
          Text(
            "Text Span ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
          ),
          Text.rich(TextSpan(children: [
            TextSpan(text: "Home:"),
            TextSpan(text: "https://flutterchain.club ", style: TextStyle(color: Colors.blue) , recognizer: TapGestureRecognizer()), // 待定手势识别
            TextSpan(text: "TODO recognizer", style: TextStyle(color: Colors.yellowAccent) , recognizer: TapGestureRecognizer()) // 待定手势识别
          ])) ,
          DefaultTextStyle(
            style: TextStyle(color: Colors.amber),
            child: Column (
              children: [
                Text(" 集成了 DefaultTextStyle"),
                Text(" 集成了 DefaultTextStyle"),
                Text(" 没集成 DefaultTextStyle" ,style: TextStyle(color: Colors.red),),
              ],
            ),
          )
        ],
      ),
    );
  }
}
